首页 文章 精选 留言 我的

精选列表

搜索[整理],共9149篇文章
优秀的个人博客,低调大师

SQL数据库语法mysql,Java语言,个人整理资料

结构化语言Sql(structured query language)结构化查询语言 DML 用来操作数据库中所包含的数据 (数据操作语言) Update 数据修改 DDL 用于创建和删除数据库对象等操作 (数据定义语言) Insert 数据新增 Delete 数据删除 DQL 用来对数据库中的数据进行查询 (数据查询语言) Create 创建数据库或表 Drop 删除数据库或表 Alter 修改数据库或表信息 Select 查询数据库 DCL 用来控制数据库组件的存储许可、存储权限等 (数据控制语言) Commit 提交数据库 Rollback 回滚数据 Grant 授权 优势运行速度快 体积小成本低 可移植性好 适用用户广 作用存储数据、便于数据检索 保证数据完整、一致 共享、安全 对数据进行重新组合 数据库和应用之间的关系数据库:存储数据,将数据响应给应用程序 应用程序:向数据库发请求,将数据库响应的信息进行展示 流行的数据库Oracle SQL server mysql 配置Prot:设置端口号 Default-charactrt-set设置编码格式 Datadir:设置数据保存路径 服务 启动方式1 我的电脑-管理服务-对应服务右键启动 2 管理员cmd-net start 服务名称 3 管理员cmd-net stop 服务名称 登录 mysql -h地址 -u 用户名 -p 密码 (-h可省略,用于异地登录) 退出 quit 运算符逻辑运算符AND 并且 OR 或者 NOT 非 比较运算符= 等于 < 小于 大于 <> 不等于(常用) = 大于等于 <= 小于等于 != 不等于 数据库操作Database(删除创建,判断是否存在)Create database数据库名 (创建数据库) Drop database 数据库名 (删除数据库) Drop database if exists数据库名 (如果存在删除数据库) TableUse 数据库名 (指定数据库) Create table 表名 (创建表名) Create table 表名(头大1 定义类型(长度),头大1 定义类型(长度),……) Show tables (查看表) Desc 表名 (查看指定表内容) Insert into 表名 values(值1,值2) 主要顺序、数量、类型要与表字段一致 Select * from 表名 查看表内所有字段内容(查询数据) Select 字段名 from 表名 Delete from 表名 删除表内所有内容 Delete from 表名 where字段=值 删除指定内容 Delete from 表名 where字段1=值 and 字段2=值 删除指定多个内容 Truncate table 表名 (清空数据并将标识恢复到默认开始) Update 表名 set 字段=值,字段=值 where 字段=值 修改内容 创建表后添加另一个表的数据:insert into 表1 select * from 表2; 重命名: alter table 表名 rename【to】 新表名 添加字段: alter table 表名 add 字段 类型 【属性】 修改字段: alter table 表名 change 原字段 新字段 类型 【属性】 删除字段: alter table 表名 drop 字段名称 约束Unique key 唯一约束 Not null 非空约束 Default 默认约束 Primary key 主键约束 Foreign key 外键约束 Constraint fk自启表名 foreign key(要设置的字段) references 主表名(被设置字段) Auto_increment 自动增长 在创建表结构后添加约束 添加主键 alter table 表名 add Constraint 约束名 primary key 表名(主键字段) 添加外键 alter table 表名 add Constraint 约束名 foreign key(要设置的外键字段) references 主表名(被设置字段) 删除主外键 Alter table 表名 drop constraint 约束名 帮助Help data types 查看数据类型 Help 类型 查看具体信息 设置编码格式:set names gbk Comment:注释 每个字段添加(注释) 引擎指定存储引擎常见存储引擎:inniDB支持事物用于增删 MyISAM不支持实物适用于查询 Create table 表名(……)engine=存储引擎 配置 My.ini文件 Default storage engine = innoDB; 查看 Show variable like storage_engines; 数据查询Select 列名 from 表名 where 查询条件 order by 排序的列名 asd或desc 查询使用别名 Select 字段 ’编号’,字段名 as ‘名字’from 表名 非空查询 Select 字段 from 表名Where 字段 is not bull Select * from 表名Where 字段 is not bull 聚合函数Avg 平均值 Count 字段行数 Max 最大值 Min 最小值 Sum 和 Select 聚合函数(字段) from 表名; 字符串Select Concat(‘字符’,‘字符’) 拼接字符串 Select Lower(‘字符’) 转换小写 Select Upper(‘字符’) 转换大写 Select Substr(‘字符’,截取开始,截取长度) 截取字符串 Select insert(‘字符’,替换开始,替换长度,‘字符’) 替换指定区间字符 日期获取当前时间: Select NOW(); 当前日期时间 Select curdate(); 当前日期 Select curtime(); 当前时间 拆分当前时间: select YEAR(NOW()); 当前年份 select MONTH(NOW()); 当前月 select bay(NOW()); 当前当前日 select WEEK(NOW()); 当前周 计算时间: Select darediff(‘时间’,now()); 两个时间的间隔 select adddate(NOW(),n); 获得那天后的日期 Mysql数据库的链接创建用户Create user 用户名; 管理员登录 Grant select on . to 用户名 @对方地址 identified by 密码 Grant 权限 on 数据库.表 to 用户名 @l主机地址 identified by 密码 主机地址:主机名、ip、%(允许任意地址远程访问) 删除用户:访问 mysql.user 表,通过delete删除(注意where条件) 修改密码Mysqladmin -uroot -p(‘修改后的密码’) 忘记密码情况下修改密码: 停止服务 在my.ini配置文件中写入skip-grant-tables启动服务dos中使用mysql -uroot -p 在输入updare mysql user set password=PASSWORD(‘新密码’)where user=’root’and host=’ 地址’; Quit退出 停止服务奖my.ini中的skip-grant-tables注掉 启动服务正常登陆 Update user 用户名 set password=PASSWORD(‘修改后的密码’) Update user set password=PASSWORD(‘修改后的密码’) 授权All所有权限 Grant 授权(以逗号隔开)on 数据库名. 表名 to 用户名 收回 Revoke 权限(以逗号隔开)on 数据库名. 表名 from 用户名 设置密码Set password for 用户名=password(‘密码’); 操作技巧发现执行命令有错误用ctrl+c强制退出 光标上下键访问用过的命令 Flush privileges 命令更新(刷新) 数据库操作导出数据库Mysqldump -u用户名 -p 密码 数据库名>导出的文件名 导出一个代表Mysqldump -u用户名 -p 密码 数据库名 表名>导出的文件名 导出一个数据库结构Mysqldump -u用户名 -p 密码 -d -add-drop-table 表名>文件名.sql -d没有数据 -add-drop-table在每个create语句之前增加一个drop table 数据传入Load data local infile “文件为位置(TXT文件)”into table 表名 导入sql文件Mysqldump -u用户名 -p 密码 表名>文件名.sql 排序Order by 字段名称 [排序方式(可省略)] Asc升序排练 Desc降序排练 如:select * from pen order by cityed ASC; select * from pen where cityed=2 order by id desc; 分组max()最大值 Min()最小值 Count()个数 Avg()平均数 Sum()求和 Select 函数(字段) from 表名 group by 字段 条件 Select 字段1,函数(字段) from 表名 group by 字段1 having 字段1=条件 多表联查 链接查询select 字段,字段,字段 from 表名1 表别名1,表名2 表别名2 where 字段=别名.字段; 内联Inner join 表名 on 条件 左外接Left join 表名 on 条件 右外接Right join 表名 on 条件 select 别名.字段,字段,字段 from 表名1 表别名1 inner join 表名2 表别名2 on 表别名1 .字段=表别名2.字段 ; 事物事物具有:原子性,一致性,隔离性,持久性 步骤开始事物(begin或start transaction)——提交事物(commit)——回滚事物(rollbank); 关闭/开启自动提交:set autocommit=0|1; 视图筛选表中的行 防止未经许可的用户访问敏感数据 将多个物理数据表抽象为一个逻辑数据表 查看所有视图名称Use 数据库 Select 表名 from views 创建视图View Use 数据库 Create view 视图名1 as select * from 表名 select * from 视图名1 索引Index Create 索引类型(可不写)index 索引名 on 表名(字段) Drop index 索引名 on 表 Show index 索引名 提高数据库的检索速度 标准平凡搜索的列 规范化关系一对一,一对多,多对一,多对多 三大范式1.确定 Java连接数据库添加jar包在项目根目录创建lib文件夹将jar包考入 在jar包上右键选择Build Path——Add Build Path 注:加载驱动的类在——com.mysql.jdbc.Driver 编写链接类注:链接数据库使用JavaAPI(Java Application Program interface) Connection:链接 Statement:执行sql语句 ResultSet:结果集 具体步骤1加载驱动创建链接加载驱动 Class.forName(“com.mysql.jdbc.Driver”); 创建链接 DriverManager.getConnection(“jdbc:mysql://数据库地址:端口号/数据库名”,“用户名”,“密码”) 编写sql并执行创建statement对象 Statement st=conn.createStatement(); 通过对象调用执行方法 Execute(sqlstr);返回boolean类型 ExecuteQuery(sqlstr);返回ResultSet类型,结果集 executeUpdate(sqlstr);返回int类型,受影响行数 处理返回结果Boolean、int直接赋值对应类型变量 用于判断或输出返回 ResultSet通过while循环便利取值 next():返回boolean类型 判断结果集中是否有数据存在 取值:gettype(int/string) Type对应数据库的类型自定义如:getInt(int/string) int/string取值时可使用字段的索引位置(索引默认从1开始)或直接写字段 事例: packagedemo; importjava.sql.Connection; importjava.sql.DriverManager; importjava.sql.ResultSet; importjava.sql.Statement; publicclassdemo { /** * java对应的Api * connection:负责java链接数据库 * statement:负责执行sql语句 * resultset:处理结果 */ publicstaticConnection conn; publicstaticStatement stat; publicstaticResultSet res; publicstaticConnection getConnection() throwsException{ //加载驱动 Class.forName("com.mysql.jdbc.Driver"); //获取链接(指定数据库:地址,名称,用户名,密码) returnDriverManager.getConnection("jdbc:mysql://localhost:3306/mybank","root","296768022"); } publicstaticvoidmain(String[] args) { try{ //创建链接(获取到链接对象后一定要赋值) conn=getConnection(); System.out.println("链接成功"); //编写sql语句 Statement st=conn.createStatement(); booleanisOk=st.execute("select * from school"); //查看结果 res=st.executeQuery("select * from school"); System.out.print(isOk); while(res.next()){ System.out.println(res.getInt("sch")+"——"+res.getString("schName")+"——"+res.getString("schId")); } } catch(Exception e) { // TODOAuto-generated catch block e.printStackTrace(); System.out.println("链接失败"); } } } 注意事项链接字符穿的拼写 创建链接对象是注意赋值给成员变量conn=getConnection(); 异常处理驱动字符串拼写错误 链接字符串拼写错误 链接对象未赋值错误 Sql语句拼写错误 遍历结果集时字段名称不符或索引位置错误 Sql注入PreparedStatement Sql语句的执行条件通过变量传值方式注入到sql语句中产生一个新的sql语句 将Statement改换为PreparedStatement接口 将sql语句的查询条件赋值方式作调整:变为占位符?,通过对象的setXXX()方法赋值 prepareIndex默认从1开始 Mybatis映射文件中常用节点增(insert)删(delete)改(update)查(select) 辅助:if、trim、set、where 常用: Sql:组织SQL语句的编写一般结合使用 Sql内容可以自定义,提前是最终拼接成完整的sql即可 Sql数量不限可多个 Bind:将复杂的Sql进行拆分 Foreach: Collection:必须项,入参为List则为“list”,入参为数组则为“array”,入参为多参时则需要Map封装处理 Item集合中每个元素迭代时的别名 Index集合中每个元素迭代时的下标 Open表示该语句以什么开始 Close表示该语句以什么结束 Separator表示每次迭代之间以什么符号作为分割符

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

时序时空数据库TSDB技术要点整理

一、基本概念 时序时空数据库 TSDB :英文全称为Time Series & Spatial Temporal Database,简称 TSDB,提供高效存取时序数据和统计分析功能的数据管理系统。是一种高性能、低成本、稳定可靠的在线时序时空数据库服务,提供高效读写、高压缩比存储、时序数据插值及聚合计算等服务,广泛应用于物联网(IoT)设备监控系统、企业能源管理系统(EMS)、生产安全监控系统和电力检测系统等行业场景;除此以外,还提供时空场景的查询和分析的能力。除此以外,还提供时空场景的查询和分析的能力。 TSDB 具备秒级写入百万级时序数据的性能,提供高压缩比低成本存储、预降采样、插值、多维聚合计算、可视化查询结果等功能,解决由设备采集点数量巨大、数据采集频率高造成的存储成本高、写入和查询分析效率低的问题。 二、时序时空数据

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

一些JS事件小片段代码整理收集(持续)

一、js实现 1 <html xmlns=" http://www.w3.org/1999/xhtml"> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 4 <script language="javascript"> 5 function AcceptData(num){ 6 document.getElementById("accepDate").value+=num; 7 } 8 </script> 9 </head> 10 11 <body> 12 <input id="accepDate" type="text" name="accepDate" /> 13 <input type="submit" name="Submit" onclick="AcceptData('1')" value="1" /> 14 <input type="submit" name="Submit" onclick="AcceptData('2')" value="2" /> 15 </body> 16 </html> 二、input输入框的value传值显示 input输入框中用户输入的值,点击按钮显示在另一个容器之中。 function show(){ 2 var callNum = document.getElementById('exampleInputName2');//声明input 3 var callBtn = document.getElementById('callBtn');//声明按钮 4 var callingNum = document.getElementById('callingNum');//声明容器 5 callingNum.innerHtml = callNum.value;//input的value值传给容器显示 6 7 8 } 三、清空功能按钮 设置一个能清空input输入框中值的按钮,添加事件 $('#btn-clear').click(function(){ $('.ipt-cont').val(' ').focus();//清空后获得焦点以便重新输入 });

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

干货:Java正确获取客户端真实IP方法整理

image 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。 如果使用了反向代理软件,将http://192.168.1.110:2046/的URL反向代理为http://www.abc.com/的URL时,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实IP。 经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。 当我们访问http://www.abc.com/index.jsp/时,其实并不是我们浏览器真正访问到了服务器上的index.jsp文件,而是先由代理服务器去访问http://192.168.1.110:2046/index.jsp,代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问index.jsp的,所以index.jsp中通过request.getRemoteAddr()的方法获取的IP实际上是代理服务器的地址,并不是客户端的IP地址。 外界流传的JAVA/PHP服务器端获取客户端IP都是这么取的: 伪代码: 1)ip = request.getHeader("X-FORWARDED-FOR ") 2)如果该值为空或数组长度为0或等于"unknown",那么: ip = request.getHeader("Proxy-Client-IP") 3)如果该值为空或数组长度为0或等于"unknown",那么: ip = request.getHeader("WL-Proxy-Client-IP") 4)如果该值为空或数组长度为0或等于"unknown",那么: ip = request.getHeader("HTTP_CLIENT_IP") 5)如果该值为空或数组长度为0或等于"unknown",那么: ip = request.getHeader("X-Real-IP") 6)如果该值为空或数组长度为0或等于"unknown",那么: ip = request.getRemoteAddr () 先说说这些请求头的意思 X-Forwarded-For 这是一个 Squid 开发的字段,只有在通过了HTTP代理或者负载均衡服务器时才会添加该项。 格式为X-Forwarded-For:client1,proxy1,proxy2,一般情况下,第一个ip为客户端真实ip,后面的为经过的代理服务器ip。现在大部分的代理都会加上这个请求头。 Proxy-Client-IP/WL- Proxy-Client-IP 这个一般是经过apache http服务器的请求才会有,用apache http做代理时一般会加上Proxy-Client-IP请求头,而WL-Proxy-Client-IP是他的weblogic插件加上的头。 HTTP_CLIENT_IP 有些代理服务器会加上此请求头。 X-Real-IP nginx代理一般会加上此请求头。 下面是一个参考获取客户端IP地址的方法: public static String getIpAddress(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } if (ip.contains(",")) { return ip.split(",")[0]; } else { return ip; } } 如果使用的是Druid连接池,可以参考使用:com.alibaba.druid.util.DruidWebUtils#getRemoteAddr方法,但这个是经过多级代理的IP地址,需要自己处理下获取第一个。 有几点要注意 这些请求头都不是http协议里的标准请求头,也就是说这个是各个代理服务器自己规定的表示客户端地址的请求头。如果哪天有一个代理服务器软件用oooo-client-ip这个请求头代表客户端请求,那上面的代码就不行了。 这些请求头不是代理服务器一定会带上的,网络上的很多匿名代理就没有这些请求头,所以获取到的客户端ip不一定是真实的客户端ip。代理服务器一般都可以自定义请求头设置。 即使请求经过的代理都会按自己的规范附上代理请求头,上面的代码也不能确保获得的一定是客户端ip。不同的网络架构,判断请求头的顺序是不一样的。 最重要的一点,请求头都是可以伪造的。如果一些对客户端校验较严格的应用(比如投票)要获取客户端ip,应该直接使用ip=request.getRemoteAddr(),虽然获取到的可能是代理的ip而不是客户端的ip,但这个获取到的ip基本上是不可能伪造的,也就杜绝了刷票的可能。(有分析说arp欺骗+syn有可能伪造此ip,如果真的可以,这是所有基于TCP协议都存在的漏洞),这个ip是tcp连接里的ip。 参考http://blog.csdn.net/sgx425021234/article/details/19043459http://blog.csdn.net/fengwind1/article/details/51992528 推荐:成为架构师的十阶段学习资料 推荐:Spring Boot & Cloud 最强技术教程 如果对你有用,欢迎分享到朋友圈 image

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

大约Android PopupWindow有用Spinner控件点击APP Crash案例整理

场景异常,如下面: android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@4190fd98 is not valid; is your activity running? at android.view.ViewRootImpl.setView(ViewRootImpl.java:646) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) at android.widget.PopupWindow.invokePopup(PopupWindow.java:993) at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:899) at android.widget.ListPopupWindow.show(ListPopupWindow.java:603) at android.widget.Spinner$DropdownPopup.show(Spinner.java:981) at android.widget.Spinner.performClick(Spinner.java:609) at android.view.View$PerformClick.run(View.java:17476) at android.os.Handler.handleCallback(Handler.java:800) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5392) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) at dalvik.system.NativeStart.main(Native Method) 解决的方法: 方案一: 给Spinner控件加上android:spinnerMode="dialog"属性能够解决点击崩溃的问题,可是样式很原始; 方案二: 未完待续.... 版权声明:本文博客原创文章。博客,未经同意,不得转载。 本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4671483.html,如需转载请自行联系原作者

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

整理了1000个手机屏幕截图,看移动应用格局

前些天土匪搞了个小调研,让大家把手机首屏和二屏的截图发过来,想做一些统计,结果回复的人数还是超过土匪预期,差不多1000张图片。 本来想一天就能解决,后来发现要把这一千张图片里的图标识别出来,做一个统计,这个真的是很繁重的一项工作,感谢同事徐洁做了非常重要的工作。但这些还是花了好几天的时间, 希望大家理解。 对于数据的几个说明:一是有些app狂人,无数个文件夹无数APP的就去除了,二是这些统计肯定不能代表所有用户,样本量不够,都是土匪的粉丝,应该是创业投资领域,三是只有首屏和部分二屏,不是所有手机里的APP,四是统计肯定有疏漏,所以只能做粗略分析。 先把总的一个表分享给大家,这个是安卓和IOS各自数量排名前五十的榜单。 经过统计以后,总结出几个有意思的点: 1. Android和iOS的用户区别还是蛮明显的,特别是首屏的习惯,这个一方面是

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

玩遍博客网站,我整理了 Hexo 及其流行的风格主题

搭建博客网站是个人进入互联网世界的最常见方式之一。伴随着网站技术的发展,如何搭建博客网站已经变得非常容易了。当然,你可以选择诸如 新浪博客、CSDN、博客园 之类的大型网站,快速创建依赖于大平台的个人博客,不过这种方式的不足是言论受限太多、无法触及网站底层技术。所以,对于想要自由发挥创意、又期望对网站拥有更多主动权的话,最好还是选择自己去亲手搭建一个网站。 本文来源:魚立说。本文链接:https://www.yulisay.com/d/nkpvy.html,支持微信浏览器打开。 更多精彩文章,请移步 魚立说个人网站 翻看。欢迎欣赏,吐槽不足之处。 本主题将围绕博客网站的搭建流程、不同的博客搭建技术及其流行的风格主题展开,整个系列由以下三个文章部分组成: 当下流行的博客技术栈 Hexo 及其流行的风格主题 Hugo 及其流行的风格主题 <div class="bordor-separation"></div> Hugo 是使用 Go 编写的快速而现代的静态站点生成器,旨在使网站创建变得有趣。特点是简单、易用、高效、扩展性好、快速部署。其官网是:https://gohugo.io。 安装 Hugo 安装 Hugo 相当简单,但是需要先安装 Go 运行环境。以 Mac 操作系统为例,安装 Hugo 的命令:brew install hugo。 初始化一个名字为 hugo-blog 的项目:hugo new site hugo-blog,此时将生成如下 Hugo 项目目录: . ├── config.toml # 网站的配置信息 ├── archetypes # 存放 .md 文件的模板 ├── content # 存放 .md 文件 ├── data # 存放 Hugo 数据 ├── layouts # 存放布局文件 ├── public # 公共文件夹,用于存放生成的站点文件 ├── static # 存放静态文件,比如图片、CSS、JS └── themes # 存放主题 快速操作 Hugo 查看版本:hugo version 新建一篇文章: hugo new post/my-first-blog.md 生成静态文件: hugo -t even 启动服务器: hugo server 正常启动服务后,在浏览器打开 http://localhost:1313/ 看到我们的网站。 流行的 Hugo 主题 使用 Hugo 博客时,我们最希望的是找到适合自己的一款主题,下面将图文结合介绍一些流行的 Hugo 主题。此外,关于写作的方法和 Hugo 主题修改,可以查阅本文参考中的 Hugo 官方文档,这里不再赘述。 找到、安装和配置 Hugo 主题 最好的搜索方式是在 https://github.com/ 中,搜索关键词:hugo theme。或者使用搜索引擎,搜索:hugo theme site:github.com。 然后进入到项目目录中,下载安装我们需要的主题(theme-demo 只是一个示例资源,请注意替代为实际的资源): git clone https://github.com/theme-demo.git themes/theme-demo cp -r themes/theme-demo/_source/* source 希望使用下载的主题,添加 themes/theme-demo/exampleSite/config.toml 中的配置,还需要在 config.toml 中配置主题: theme = "theme-demo" 此外,在有些 theme-demo 文件夹中会有 demo 或 example 目录,文件结构与新建的 Hugo 项目的文件结构几乎是一样的,这样设置是为了用户的配置可以覆盖掉主题的配置。 Hugo 流行主题之 1:MemE MemE 是一个强大且可高度定制的 GoHugo 博客主题,专为个人博客设计。MemE 主题专注于优雅、简约、现代,以及代码的正确性。Github 地址:https://github.com/reuixiy/hugo-theme-meme。 Hugo 流行主题之 2:Clarity 基于 VMware 的开源 Clarity 设计系统,具有丰富的代码支持、暗/光模式、移动支持等特点,为 Hugo 设计了一个具有技术意识的主题。Github 地址:https://github.com/chipzoller/hugo-clarity。 Hugo 流行主题之 3:Even 一个很简洁的主题,移植自 hexo-theme-even。Github 地址:https://github.com/olOwOlo/hugo-theme-even。 Hugo 流行主题之 4:Octopress 从 Octopress 博客移植过来的经典主题。Github 地址:https://github.com/parsiya/Hugo-Octopress。 Hugo 流行主题之 5:Tokiwa 一个极简的博客主题,对汉字进行了显示优化。Github 地址:https://github.com/heyeshuang/hugo-theme-tokiwa。 除了以上几种,还有更多不错的 Hugo 风格主题供你选用,可以前往 Hugo 主题网站 找到。如果你有好的想法和设计,也可以创建并发布自己制作的 Hugo 主题,到时候欢迎给我的网站 魚立说 留言。 参考链接 ① Hugo 官方文档 ② Hugo Themes

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

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

Spring

Spring

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

Sublime Text

Sublime Text

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