首页 文章 精选 留言 我的

精选列表

搜索[全模态理解],共10000篇文章
优秀的个人博客,低调大师

Elasticsearch API 使用指南(全)

1. 集群支持的选项 curl -XGET "http://172.0.0.52:9200/_cat" 2. 查看节点信息 curl -XGET "http://172.0.0.52:9200/_cat/nodes?v" 3. 查看master节点信息 curl -XGET "http://172.0.0.52:9200/_cat/master?v" 4.查看所有节点上的热点线程 curl -XGET "http://172.0.0.52:9200/_nodes/hot_threads" 5.查看有问题的分片或索引 curl -XGET "http://172.0.0.52:9200/_cluster/allocation/explain?pretty" 6.查看线程池设置 curl -XGET "http://172.0.0.52:9200/_nodes/thread_pool/" 7.统计全部信息 curl -XGET "http://172.0.0.52:9200/_cluster/stats?human&pretty" 8.查看集群状态 curl -XGET "http://172.0.0.52:9200/_cluster/health?pretty" 9.查看ES信息 curl -XGET "http://172.0.0.52:9200/" 10.获取所有索引的信息 curl -XGET "http://172.0.0.52:9200/_cat/indices?v&pretty" curl -XGET "http://172.0.0.52:9200/_cat/nodes?v" curl -XGET "http://172.0.0.52:9200/_cat/segments?v&h=shard,segment,size,size.memory" 11.获取所有文档数量 curl -XGET "http://172.0.0.52:9200/_count?pretty" -H 'Content-Type: application/json' -d' { "query": { "match_all": {} } }' 12. 查看集群的健康状态 green:所有功能都是完好的; yellow:所有数据是可用的,但是一些副本还没有被分配; red代表一些数据由于某些原因已经不可用。 注意,尽管一个集群是red状态,它仍然可以提供部分服务(比如,它会继续从可用的切片数据里搜索),但是在失去部分数据后,需要尽快去修复。 curl -XGET "http://172.0.0.52:9200/_cat/health?v" 13. 创建索引 test_one 索引名 pretty 参数表示输出格式良好的JSON响应(如果存在) curl -XPUT "http://172.0.0.52:9200/test_one?pretty" 14. 查看索引列表 curl -XGET "http://172.0.0.52:9200/_cat/indices?v" curl -XGET "http://172.0.0.52:9200/test_one" 15. 删除索引 根据索引名称删除 curl -XDELETE "http://172.0.0.52:9200/test_one?pretty" 可以一次删除多个索引(以逗号间隔)删除所有索引_all或通配符 * 16. 创建文档 向es中插入文档的时候,必须要指定一个类型(type) 16.1.使用PUT来创建文档,需要指定id 索引 index:test_one 类型 type:test_type _id:1 curl -XPUT "http://172.0.0.52:9200/test_one/test_type/1?pretty" -H 'Content-Type: application/json' -d' {"name": "ghl", "age": 24, "sex": "male"}' 16.2. 使用POST来创建文档,可以不指定id(不指定时随机生成id) curl -XPOST "http://172.0.0.52:9200/test_one/test_type?pretty" -H 'Content-Type: application/json' -d' {"name": "Jack"}' 17. 查看文档 curl -XGET "http://172.0.0.52:9200/test_one/test_type/1?pretty" 18. 替换文档 使用PUT并指定id时,es会使用新的文档替换原文档 curl -XPUT "http://172.0.0.52:9200/test_one/test_type/1?pretty" -H 'Content-Type: application/json' -d' {"name": "Jack"}' 19. 更新文档 curl -XPOST "http://172.0.0.52:9200/test_one/test_type/1/_update?pretty" -H 'Content-Type: application/json' -d' {"doc":{"name": "Lucy"}}' 20. 删除文档 curl -XDELETE "http://172.0.0.52:9200/test_one/test_type/1?pretty" 21. 索引的增删改查有一个类似的格式下: curl -XGET "http://172.0.0.52:9200/<Index>/<Type>/<ID>" REST Verb:REST风格的语法谓词; Node:节点ip; port:节点端口号,默认9200; Index:索引名; Type:索引类型; ID:操作对象的ID号; 22. 判断索引是否存在 curl -XHEAD "http://172.0.0.52:9200/test_one" 23. 查看索引模板 curl -XGET "http://172.0.0.52:9200/_template/template_1" curl -XGET "http://172.0.0.52:9200/_template/temp*" curl -XGET "http://172.0.0.52:9200/_template/template_1,template_2" curl -XGET "http://172.0.0.52:9200/_template" 24. 删除模板 curl -XDELETE "http://172.0.0.52:9200/_template/template_1" 25. 打开/关闭索引 curl -XPOST "http://172.0.0.52:9200/test_one/_close" curl -XPOST "http://172.0.0.52:9200/test_one/_open" curl -XGET "http://172.0.0.52:9200/_cat/indices?v" 26.查看索引状态信息 curl -XGET "http://172.0.0.52:9200/_stats" curl -XGET "http://172.0.0.52:9200/logstash-nginx-access-2019.08.07,test_one/_stats" 27.查看索引段信息 curl -XGET "http://172.0.0.52:9200/test_one/_segments" curl -XGET "http://172.0.0.52:9200/logstash-nginx-access-2019.08.07,test_one/_segments" curl -XGET "http://172.0.0.52:9200/_segments"

优秀的个人博客,低调大师

ACM 无缝支持 Spring 全栈

ACM 产品介绍 应用配置管理 ACM(Application ConfigurationManagement)前身为淘宝内部配置中心Diamond,是一款在分布式架构环境中对应用配置进行“集中管理”和“动态推送”的配置中心产品。利用ACM,您可以在微服务、DevOps、大数据等场景下极大减轻配置管理的工作量,并增强配置管理的服务能力。 核心功能 统一管控:您可以在 ACM 的控制台统一管理所有应用的配置,而不再像传统配置那样,分散在各处。 动态推送:当你在 ACM 控制台修改了配置, ACM 能够实时将修改后的配置推送到接入 ACM 服务的应用进程中。 版本管理:ACM 控制台保留配置变更各个历史版本,当前你发现误修改配置后,能够快速得回滚,降低影响面。 灰度发布:有一些配置是相对比较重要,一旦变更,可能会带来很大的影响。通过灰度发布功能,

优秀的个人博客,低调大师

Python全栈工程师

ParisGabriel Python 入门基础 print(“hello world”)变量 : 存储信息的,日后被调用、修改操作常量: 固定不变的量,字母大写命名规则:1. 字母数字下划线组成2. 不能以数字开头,不能含有特殊字符和空格3. 不能以保留字命名4. 不能以中文命名5. 定义的变量名应该有意义6. 驼峰式命、 下划线分割单词7. 变量名区分大小写a=1b=2if a<b: print("Yes") print("Yes") print("Yes") print("Yes")else: print("No")a=1b=2 if a>b: print("Yes") elif a==b: print("第三") else: print("any") if 条件1: 自拍elif 条件2: 蹦 else: 跳舞 # 单行注释'''多行注释'''""" 多行注释 """ input() "abc" + "qwe" file.py 文件的扩展名:.py : python的程序文件.txt : 文本文件pdf chm html doc xml xls ppt jpg png gif jpeg bmpavi rmvb MP4 mkv 3gp WMV MP3 flue mid True 真 正确的False 假 错误的 a b = 100c = 1000 if b <= a <= c: print("True") num number num1 = intpu("Num1:")num2 = intpu("Num2:")num3 = intpu("Num3:") 输出三个数字中的最大值/最小值 if num1>num2>num3: #num1最大else: #num1<num2 if num1>num2>num3 #num1最大elif num1>num3>num2 #num1最大elif num2>num1>num3 #num2最大elif num2>num3>num1 #num2最大elif num3>num2>num1 #num3最大else num3>num1>num2 #num3最大 num1 num2 num3 max_num =0if num1>num2: max_num= num1 if max_num > num3: print("Max NUM is",max_num) else: print("Max NUM is",num3)else: max_num = num2 if max_num > num3: print("Max NUM is",max_num) else: print("Max NUM is",num3) num += 1 等价于 num = num + 1num -= 1 等价于 num = num - 1num *= 2 等价于 num = num * 2num /= 2 等价于 num = num / 2num //= 2 等价于 num = num // 2num %= 2 等价于 num = num % 2num **= 2 等价于 num = num ** 2 and 且,并且只有两个条件全部为True(正确)的时候, 结果才会为True(正确) 条件1 and 条件2 5>3 and 6<2 True or 或,或者只要有一个条件为True,则结果为Ture,5>3 or 6<2 真 或 假 not 不,雅蠛蝶 not 5>3 == Falsenot 5<3 == True a>b and (c>d or (not f)) (not (not True)) or (False and (not True)) 条件1 and 条件2条件1 or 条件2 短路原则对于and 如果前面的第一个条件为假,那么这个and前后两个条件组成的表达式 的计算结果就一定为假,第二个条件就不会被计算 对于or 如果前面的第一个条件为真,那么这个or前后两个条件组成的表达式 的计算结果就一定为真,第二个条件就不会被计算 True or True and False 猜年龄 age = 50 user_input_age = int(input("Age is :"))if ....while 循环 while 条件: print("any") print("any") num = 1 while num<10: # 2 print(num) # 2 num+=1 # 3 if num == 9: # 3 breaknum = 1 while num<=100: # num<=100 等价于 True # while num<=100: 等价于 while True: if num%2 == 0: print(num) num += 1num = 1 while num<=100: if num%2 == 1: print(num) num += 1 age = 50 #user_input_age = int(input("Age is :")) flag = True while flag: user_input_age = int(input("Age is :")) if user_input_age == age: print("Yes") flag =False elif user_input_age > age: print("Is bigger") else: print("Is smaller") print("End") break # 终止age = 50 #user_input_age = int(input("Age is :")) #flag = True# break while True: user_input_age = int(input("Age is :")) if user_input_age == age: print("Yes") break elif user_input_age > age: print("Is bigger") else: print("Is smaller") print("End") continue 继续 if a>b and d<f or 5>3 and d == e: ...... while 条件: ....else: .... statement 语句 num = 1while num <= 10: num += 1 if num == 5: break print(num)else: print("This is else statement") while 条件1: ..... while 条件2: .... 1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=9.... #print("hello world.",end="__") # \n \r\n \r#print("hello world.",end="__")#print("hello world.",end="__") num1 = 0 while num1<=5: print(num1,end="_") num2 = 0 while num2<=7: print(num2,end="-") num2+=1 num1+=1 print() # print(end="\n") #0_0-1-2-3-4-5-6-7-#1_0-1-2-3-4-5-6-7- Height 高度width 宽度 height = int(input("Height:")) # 用户输入一个高度width = int(input("width:")) # 用户输入一个宽度 num_height = 1while num_height <=height: num_width = 1 while num_width <= width: print("#", end="") num_width += 1 print() num_height += 1 12345678223456783234567842345678 第一行的时候 8字符 8次循环第二行的时候 8字符 8次循环第三行的时候 8字符 8次循环第四行的时候 8字符 8次循环 width = int(input("width:")) num_width = 1 while num_width<=width: print("#", end="") num_width +=1print() num_width = 1while num_width<=width: print("#", end="") num_width +=1print() num_width = 1while num_width<=width: print("#", end="") num_width +=1print() num_width = 1while num_width<=width: print("#", end="") num_width +=1 #print("#",end="")#print("#",end="")#print("#",end="")#print("#",end="") print() num = 4 while num>0: print("#", end="") num -= 1 print() # @ == #### height = int(input("Height:")) # 用户输入一个高度width = int(input("width:")) # 用户输入一个宽度 #num2 = height num2 = height # 第一步: 赋值while num2 > 0: # 第二步 :num2 == 2 num1 = width # 第三步: 赋值 while num1>0: # 第四部:num1==2 # 第七步:num1 = 1 print("#", end="") # 第五步: 不换行 打印一个# 第八步: 不换行 打印一个# num1 -= 1 #第六步: num1 = 1 第九步: num1 = 0 print() # 第十步 : 只是换行 num2 -= 1 # 第十一步 : num2=1 #### print("1*1=",1) # "1*1=",1 == str(m)+"*"+str(n)+"=",1 m = 2n = 2 print( str(m)+ "*" + str(n) + "=" , m*n )line = 5 # 第一步 : 赋值while line>0: # 第二部 line=5 tmp = line # 第三部 : tmp =5 tmp=4 while tmp>0: # 第四部 : tmp =5 #第七步 tmp=4 #第十部: tmp=3 第十三步 tmp=2 print("*",end="") #第五步 #第八部 #第十一部 #第十四步 tmp = tmp-1 # 第六步 tmp = 4 # 第九步 tmp=3 # 第十二步 tmp=2 第十五步 tmp= 1 print() #print(line) line -= 1first = 1while first<=9: sec = 1 while sec <= first: print( str(sec)+"*"+ str(first) +"="+str(sec * first), end="\t") sec += 1 print() first += 1 今天太晚了明天要上课 明天晚上补图片 代码

优秀的个人博客,低调大师

mysql全表抽取到MPP

代码实例 package com.epoint.com.mysql_mpp_full; import java.io.FileNotFoundException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.TimeZone; public class AutoMysqltoMPP { private static String MYSQLUSERNAME = "root"; private static String MYSQLPASSWORD = "Gepoint"; private static String MYSQLDRIVER = "com.mysql.jdbc.Driver"; private static String MYSQLURL = "jdbc:mysql://100.2.5.221:3307/dep_fr_db"; private static String MYSQLDATABASE = "dep_fr_db"; private static String MPPDRIVER = "com.MPP.jdbc.Driver"; private static String MPPURL = "jdbc:MPP://100.2.5.1:5258/dep_fr_db"; private static String MPPUSERNAME = "mpp"; private static String MPPPASSWORD = "h3c"; private static Connection mysqlconn = null; private static Statement mysqlpstm = null; private static ResultSet mysqlrs = null; private static Connection mppconn = null; private static Statement mppstm = null; private static ResultSet mpprs = null; String sql1 = " "; String sql2 = " "; String sql3 = " "; String sql4 = " "; String sql5 = " "; String sql6 = " "; public static void main(String[] args) throws Exception { AutoMysqltoMPP aidth = new AutoMysqltoMPP(); aidth.getMYSQLConnection(); aidth.MYSQLReleaseResource(); aidth.getMPPConnection(); aidth.MPPReleaseResource(); aidth.CreateMPPTable(); // aidth.ImportDataToMPP(); System.out.println("表已创建完毕,赶紧去查看表吧!!"); SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SS"); TimeZone t = sdf.getTimeZone(); t.setRawOffset(0); sdf.setTimeZone(t); Long startTime = System.currentTimeMillis(); // 此段为要放置测取时间的函数 mysqlconn = getMYSQLConnection(); mppconn = getMPPConnection(); mppstm = mppconn.createStatement(); mysqlpstm = mysqlconn.createStatement(); mppstm.execute("TRUNCATE table code_main"); aidth.tableInput(); Long endTime = System.currentTimeMillis(); System.out.println("用时:" + sdf.format(new Date(endTime - startTime))); } public void CreateMPPTable() { mysqlconn = getMYSQLConnection(); mppconn = getMPPConnection(); try { mppstm = mppconn.createStatement(); mysqlpstm = mysqlconn.createStatement(); int i = 0; String sql = "SELECT table_schema\r\n" + " ,table_name\r\n" + " ,(\r\n" + " CASE \r\n" + " WHEN ORDINAL_POSITION = mincol\r\n" + " AND ORDINAL_POSITION < maxcol\r\n" + " THEN CONCAT (\"create table if not exists \"\r\n" + " ,table_schema\r\n" + " ,\".\"\r\n" + " ,table_name\r\n" + " ,\"(`\"\r\n" + " ,column_name\r\n" + " ,\"` \"\r\n" + " ,COLUMN_TYPE\r\n" + " ,\",\"\r\n" + " )\r\n" + " WHEN ORDINAL_POSITION = mincol\r\n" + " AND ORDINAL_POSITION = maxcol\r\n" + " THEN CONCAT (\"create table if not exists \"\r\n" + " ,table_schema\r\n" + " ,\".\"\r\n" + " ,table_name\r\n" + " ,\"(`\"\r\n" + " ,column_name\r\n" + " ,\"` \"\r\n" + " ,COLUMN_TYPE\r\n" + " ,\");\"\r\n" + " )\r\n" + " WHEN ORDINAL_POSITION > mincol\r\n" + " AND ORDINAL_POSITION < maxcol\r\n" + " THEN CONCAT (\r\n" + " \"`\"\r\n" + " ,column_name\r\n" + " ,\"` \"\r\n" + " ,COLUMN_TYPE\r\n" + " ,\",\"\r\n" + " )\r\n" + " WHEN ORDINAL_POSITION = maxcol\r\n" + " THEN CONCAT (\r\n" + " \"`\"\r\n" + " ,column_name\r\n" + " ,\"` \"\r\n" + " ,COLUMN_TYPE\r\n" + " ,\");\"\r\n" + " )\r\n" + " END\r\n" + " ) AS statement\r\n" + " ,ORDINAL_POSITION\r\n" + " ,maxcol\r\n" + " ,mincol\r\n" + "FROM (\r\n" + " SELECT b.table_schema,b.table_name,b.ORDINAL_POSITION,b.column_name,\r\n" + " (case\r\n" + " when column_type = 'timestamp' then 'datetime'\r\n" + " when column_type = 'bit(1)' then 'int(1)'\r\n" + " else\r\n" + " column_type\r\n" + " end ) AS column_type\r\n" + " ,a.maxcol\r\n" + " ,a.mincol\r\n" + " FROM (\r\n" + " SELECT table_schema\r\n" + " ,table_name\r\n" + " ,max(ORDINAL_POSITION) maxcol\r\n" + " ,min(ORDINAL_POSITION) mincol\r\n" + " FROM information_schema.COLUMNS\r\n" + " GROUP BY table_schema\r\n" + " ,table_name\r\n" + " ) a\r\n" + " JOIN (\r\n" + " SELECT table_schema\r\n" + " ,table_name\r\n" + " ,ORDINAL_POSITION\r\n" + " ,column_name\r\n" + " ,COLUMN_TYPE\r\n" + " FROM information_schema.COLUMNS\r\n" + " ORDER BY table_schema\r\n" + " ,table_name\r\n" + " ,ORDINAL_POSITION ASC\r\n" + " ) b ON a.table_schema = b.table_schema\r\n" + " AND a.table_name = b.table_name\r\n" + " ) c\r\n" + "WHERE table_schema = '" + MYSQLDATABASE + "'"; mysqlrs = mysqlpstm.executeQuery(sql); while (mysqlrs.next()) { sql1 = mysqlrs.getString(3); sql2 = sql2 + sql1; } sql3 = "create database IF NOT EXISTS " + MYSQLDATABASE; mppstm.execute(sql3); System.out.println("-------------------建mpp表,表结构的语句为:" + sql2); String[] sqls = sql2.split(";"); for (String m : sqls) { mppstm.execute(m); } System.out.println("----------------------------------------建mpp表已结束!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); mppstm.close(); mysqlpstm.close(); } catch (SQLException e) { e.printStackTrace(); } finally { MYSQLReleaseResource(); MPPReleaseResource(); } } public void ImportDataToMPP() { mysqlconn = getMYSQLConnection(); mppconn = getMPPConnection(); String sql = "select table_name from user_tables where num_rows > 0 order by table_name asc"; int i = 0; try { mysqlpstm = mysqlconn.createStatement(); mysqlrs = mysqlpstm.executeQuery(sql); mppstm = mppconn.createStatement(); while (mysqlrs.next()) { i = i + 1; String table_name = mysqlrs.getString("table_name").replaceAll("\\$", ""); String sql7 = "insert into " + MYSQLDATABASE + "." + table_name + " select * from " + MYSQLDATABASE + "_ex." + table_name; System.out.println("现在插入第" + i + "个表:" + sql7); mppstm.execute(sql7); } } catch (SQLException e) { e.printStackTrace(); } finally { MYSQLReleaseResource(); MPPReleaseResource(); } } public static List<List<String>> tableInput() throws FileNotFoundException, SQLException { List<List<String>> FindList = new ArrayList<List<String>>(); mysqlconn = getMYSQLConnection(); mppconn = getMPPConnection(); mppstm = mppconn.createStatement(); mysqlpstm = mysqlconn.createStatement(); PreparedStatement pre = null; ResultSet resultSet = null; String sql = "SELECT CODEID,CODENAME,LEVNUM,CATEGORYNUM,description,isfromsoa FROM code_main"; try { pre = mysqlconn.prepareStatement(sql); resultSet = pre.executeQuery(); String[] columu = { "CODEID","CODENAME","LEVNUM","CATEGORYNUM","description","isfromsoa"}; int i = 0; while (resultSet.next()) { List<String> minList = new ArrayList<String>(); for (String each : columu) { minList.add(resultSet.getString(each)); } FindList.add(minList); i++; if (i % 10000 == 0) { // 设置的每次提交大小为10000 executeManySql(FindList); FindList.removeAll(FindList); System.out.println(i); } } executeManySql(FindList);// 最后别忘了提交剩余的 return FindList; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { pre.close();// 关闭Statement } catch (SQLException e) { e.printStackTrace(); } try { mppstm.close(); mysqlpstm.close(); } catch (SQLException e) { e.printStackTrace(); } } return null; } //executeManySql(FindList)函数如下,因为数据量比较大,所以我设置的每次提交大小为10000,这样就不会内存溢出了。 public static void executeManySql(List<List<String>> FindList) throws SQLException { mysqlconn = getMYSQLConnection(); mppconn = getMPPConnection(); mppstm = mppconn.createStatement(); mysqlpstm = mysqlconn.createStatement(); mppconn.setAutoCommit(false); Statement stat = null; PreparedStatement pst = (PreparedStatement) mppconn .prepareStatement("insert into code_main values (?,?,?,?,?,?)"); for (List<String> minList : FindList) { for (int i = 0; i < minList.size(); i++) { pst.setString(i + 1, minList.get(i)); } // 把一个SQL命令加入命令列表 pst.addBatch(); } // 执行批量更新 pst.executeBatch(); // 语句执行完毕,提交本事务 mppconn.commit(); pst.close(); mppstm.close(); mysqlpstm.close();// 一定要记住关闭连接,不然mysql回应为too many connection自我保护而断开。 }//同时我还设置了计时的函数,可以看到这个从数据抽取到完成数据迁移的时间。 public static Connection getMYSQLConnection() { try { Class.forName(MYSQLDRIVER); mysqlconn = DriverManager.getConnection(MYSQLURL, MYSQLUSERNAME, MYSQLPASSWORD); } catch (ClassNotFoundException e) { throw new RuntimeException("class not find !", e); } catch (SQLException e) { throw new RuntimeException("get connection error!", e); } return mysqlconn; } public void MYSQLReleaseResource() { if (mysqlrs != null) { try { mysqlrs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (mysqlpstm != null) { try { mysqlpstm.close(); } catch (SQLException e) { e.printStackTrace(); } } if (mysqlconn != null) { try { mysqlconn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static Connection getMPPConnection() { try { Class.forName(MPPDRIVER); mppconn = DriverManager.getConnection(MPPURL, MPPUSERNAME, MPPPASSWORD); } catch (ClassNotFoundException e) { throw new RuntimeException("class not find !", e); } catch (SQLException e) { throw new RuntimeException("get connection error!", e); } return mppconn; } public void MPPReleaseResource() { if (mpprs != null) { try { mpprs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (mppstm != null) { try { mppstm.close(); } catch (SQLException e) { e.printStackTrace(); } } if (mppconn != null) { try { mppconn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }

优秀的个人博客,低调大师

2017阿里技术年度精选(全)

image.png 2017年,在技术发展的历史上,一定是个特别的一年:柯洁与AlphaGo的惊世大战,无人咖啡店开放体验,AI设计师“鲁班”横空出世、三年投入千亿的达摩院正式成立…… 这次,在阿里全年发布的近300篇文章中,阿里选出65篇,集结成这套 《2017 阿里技术年度精选》,分为上、下两册,总计600余页。 这套精选集覆盖多个热门技术领域:算法、机器学习、大数据、数据库、中间件、运维、安全、移动开发等,文章内容涉及技术架构、核心算法、解决方案等干货。无论你是计算机相关专业的在校学生、科研机构的 研究人员,还是步入社会的IT从业人员,相信都能从中受益。 这套书同时收录了十多位阿里技术人的访谈:从工程师到合伙人的多隆,6年时间影响数亿用户的靖世,入选MIT2017年度TR35的王刚&吴翰清,免试晋升为研究员的钱磊等,将为你展现不一样的技术人生。 它不是一本系统讲述某个领域的书,更像是一本技术杂文选集,内容五花八门。翻开书来,一眼望去,皆是散落在各个技术领域的结晶。你可以 把它当作床头书,或是在旅行的路上随手翻翻,充充电。希望这本书,能为 你打开一扇窗,去看更大的世界;成为一个小支点,帮你撬动更大的进步。 这套书的目录如下: 存储 / 数据库 运维 中间件 大牛观点 阿里开源 技术人生 这是总体目录,具体细节请查看这套全书。 如何获取此套书? 关注"阿里技术"微信公众号,回复“精选”获取,或者直接在" Java技术栈 "QQ群中下载,作者已经下载并将上、下两册打包在群文件中。 image.png 推荐阅读 个人珍藏最全Spring Boot全套视频教程 分享一套高级视频教程:Dubbo+Zookeeper+ActiveMQ+Redis系列 分享一套分布式架构设计高级视频教程 分享一套Hadoop全套视频教程系列 去BAT面试完的Mysql面试题总结(55道,带完整答案) 阿里高级Java面试题(首发,70道,带详细答案) 2017派卧底去阿里、京东、美团、滴滴带回来的面试题及答案 Spring面试题(70道,史上最全) 通往大神之路,百度Java面试题前200页。 分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册