WANG LH , Research & Development

接口异常封装

异常封装 异常封装代码示例 设计异常类型 可以参考http状态码的方式,根据自己的业务需求设计自己的一套错误代码,比如 100-200代表什么错误 200-300代表什么错误 300-400代表什么错误 将一个类型的错误放到一起,这样根据错误......

统一接口返回数据的类型

为什么要统一接口返回数据结构 接口上方便后端与前端交互,同时也美化了后端接口返回的数据。 设计 { "status":{ "code":0, "name":"OK", "msg":"succeed" }, "data": object } status 返回接口状态相关信息 data 返回具体请求的业务数据......

常用规范

语义化版本控制规范https://semver.org/lang/zh-CN/ 告别编程5分钟,命名两小时https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/java-naming-conventions.md

关注feed流设计方案

简单方案 Select * from post where user_id in (following_userId_list) order by publish_time desc; 短时间内还可以维持一段时间,当数据量达到千级别,数据库查询可能会出性能问题。 优点:该方案简单,容易开发迅速上线,适合非常前期的使用。 缺点:不能支撑后续比较大的数据......

Spring 经验

Spring 实用技巧 总结项目经验的时候,提取的一些有用常用的spring技巧 Spring gradle依赖插件省略版本号 buildscript { dependencies { classpath("io.spring.gradle:dependency-management-plugin:$dependencyManagementVersion") } } plugins { id 'java-library' } group 'com.sea' version '1.0-SNAPSHOT' subprojects { repositories { mavenLocal() mavenCentral() } apply plugin: 'io.spring.dependency-management' dependencyManagement { imports { mavenBom "com.sea:dependency-management:1.0-SNAPSHOT" } } dependencies { // springboot annotationProcessor("org.springframework.boot:spring-boot-configuration-processor") api("org.springframework.boot:spring-boot-autoconfigure") api "org.springframework.boot:spring-boot-starter-web......

iTerm常用快捷键

光标控制 ctrl + a: 到行首 ctrl + e: 行末 ctrl + f/b: 前进后退,相当于左右方向键,但是显然比移开手按方向键更快 ctrl + p: 上一条命令,相当于方向键上 ctrl + r: 搜索命令历史,这个大家都应该很熟悉了 ctrl + d: 删除当前字符 ctrl + h: 删除之前的字......

ElasticSearch手记

ElasticSearch 手记 安装后要修改的配置 path.data 和 path.logs (默认在安装目录) cluster.name (不同的环境不要使用同一个集群的名称,节点容易假如错误的集群) node.name bootstrap.memory_lock network.host discovery.zen.ping.unicast.hosts discovery.zen.minimum_master_nodes 参考:http://cwiki.apachecn.org/pages/viewpage.action?pageId=4882617 对所有索引设置 PUT /_all/_settings 对集群设......

log4j 配置

log4j 配置及平常使用 #(ConsoleAppender:控制台打印) log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

线程池&并发流

Java的并发流,如果直接使用parallelStream,线程数与机器cpu数一样。可以使用ForkjoinPool设置线程。 ForkJoinPool forkJoinPool = new ForkJoinPool(20); forkJoinPool.submit(() -> { ist.parallelStream().forEach(item -> { }); }) ExecutorService使用方法: ExecutorService executor = Executors.newFixedThreadPool(20); List<Future> futures = Lists.newArrayList(); orderProds.stream().forEach(orderProd -> { Future future = executor.submit(() -> { }); futures.add(future); }); // 判断是否结束 futures.stream().forEach......

数据库修改不常用命令

ALTER TABLE:添加,修改,删除表的列,约束等表的定义。 查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列:alter table 表名 add column 列名 varchar(30); 删除列:alter table 表名 drop column 列名; 修改列名MySQL: alter table bbb change nnnnn hh int; 修改列名SQLServer:exec sp_rename't_student.name','nn','column'; 修改......