Skip to content

Instantly share code, notes, and snippets.

View sunwu51's full-sized avatar
😵‍💫
Working from home

Frank sunwu51

😵‍💫
Working from home
View GitHub Profile
@sunwu51
sunwu51 / README.md
Last active November 27, 2019 08:46
我的创业过程中遇到的问题和解决方案

创业?

前一段时间我和几个同学还有几个公司的人一起做了一个创业的项目,是关于一个手机app的。我在项目中的角色是服务端的负责人。其实就我一个人做服务端,因为之前没有真正做过这种模式的项目,所以刚开始的时候有些犯怵,很多是平时不知道的东西要先去学习。另外因为各方面的考虑最后选择了用php来做服务端,而我的php水平是比较浅显的。所以在这个项目的进行过程中,我要不断遇到问题,探索问题,解决问题。

php?

"世界上最好的语言"我个人不太喜欢写PHP,但是确实在做一个互联网项目的时候,需要考虑整合第三方的框架,比如聊天框架,支付宝微信支付框架等。这些框架往往只提供java .net 和 php三个版本的SDK和demo,如果这时候我们用的是python开发或者nodejs开发的服务端,那很多库还要自己封装,十分麻烦,而java的开发效率较低,对于原型服务来说不合适.net又要用非常不熟悉的windows服务器。所以客观来看php是最合适的。

框架?

虽然学过php的基础语法,但是想要用原生的php来写服务端确实不是一个明智的选择。单是数据库的查询就要超过业务逻辑的代码量了。而php的框架我只学过thinkphp这个简单(简陋)实用的,不过对于我们的app来说thinkphp的功能已经够用了。所以最后选择了thinkphp框架,来做服务端。版本是3.2.3版本。

短信验证

在注册的时候发送短信验证码,是我遇到的第一个问题,之前做的东西都是自己在玩,根本不会用到这种第三方的东西。第一次接触这种sdk还是有些胆怯的,不过仔细阅读了步骤,发现似乎并不难。因为服务器租了阿里的,所以短信的服务干脆也从阿里来租。于是查到了阿里大于http://www.alidayu.com

阿里大于注册是免费的,而且上来会提供几块钱的免费券,可以让你测试发送短信,注册后(有淘宝账号直接登录)进入管理中心。需要做的步骤依次为:

@sunwu51
sunwu51 / MVC.md
Last active September 3, 2017 06:04
SpringBoot Weblayer

Spring Boot Weblayer

web层的相关知识点

---------Controller---------

1 ModelAndView

当需要返回传递了model的View时,我们可以通过设置返回值为ModelAndView,并传递模型映射:

@RequestMapping("/hello")
public ModelAndView hello(@RequestParam(value="name", required=false, defaultValue="World") String name) {
    HashMap<String,Object> map=new HashMap<>();
@sunwu51
sunwu51 / SpringBoot&SpringSecurity.md
Last active February 7, 2019 07:16
SpringBoot&SpringSecurity

SpringBoot + Spring Security

1 快速开始

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-security</artifactId>
</dependency>

直接启动项目,就能在调试信息中看到一个默认生成的密码,用户名是user。如果我们访问资源就会被拦截,有个默认的输入界面/login和一个httpBasic认证页面我们通过这个账号密码可以登陆,登陆后就可以访问资源。

1.1 发生了什么

@sunwu51
sunwu51 / webpack.md
Created December 18, 2017 14:32
webpack

Webpack 3.5.5

常用功能速查手册[截止2017/12/18]

1 基础配置

1.1 入口文件

//entry: {[entryChunkName: string]: string|Array<string>}
//单入口: entry: './file.js'
//多入口: entry: {app: './app.js',vendors: './vendors.js'}
const config = {
   entry: {app: './app.js',vendors: './vendors.js'}

SpringBoot Rest接口

1 请求参数的接收

从客户端来看请求参数四种形式:路径参数、查询字符串、表单参数、json参数、其他参数。 从服务端来看请求参数分为

  • RequestParam 对应查询参数和表单参数
  • PathVariable 对应路径参数
  • RequestBody 对应Json/xml等内容参数
  • RequestHeader 对应请求头中参数
  • CookieValue 对应cookie参数
@sunwu51
sunwu51 / phaser题目.md
Last active March 20, 2023 13:38
phaser题目

题目

有4线程,分阶段执行任务,第0阶段,需4个都执行完才能开始下一阶段。第1阶段,需3个都执行完才能开始下一阶段。第2阶段,需2个都执行完才算最终完成。

public class Main{
    public static void main(String[] args) {
        test();
    }
    static void test(){
        Phaser phaser = new Phaser(4);
        for(int i=0;i<4;i++){
@sunwu51
sunwu51 / Main.java
Created April 25, 2020 16:30
metaspace
package meta;
import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;
/**
* @author Frank
|----------------------------------------------------------------------------------------|--------------------|
| Object Header (64 bits) | State |
|-------------------------------------------------------|--------------------------------|--------------------|
| Mark Word (32 bits) | Klass Word (32 bits) | |
|-------------------------------------------------------|--------------------------------|--------------------|
| identity_hashcode:25 | age:4 | biased_lock:1 | lock:2 | OOP to metadata object | Normal |
|-------------------------------------------------------|--------------------------------|--------------------|
| thread:23 | epoch:2 | age:4 | biased_lock:1 | lock:2 | OOP to metadata object | Biased |
|-------------------------------------------------------|--------------------------------|--------------------|
|
@sunwu51
sunwu51 / trie.js
Created February 28, 2021 08:45
Trie.js
class TrieNode {
constructor() {
this.value = undefined;
this.isEnd = false;
this.arr = {};
}
}
class TrieTree {
constructor() {
@sunwu51
sunwu51 / ObjectHeaderUtil.java
Created March 28, 2022 09:19
print java object header
import sun.misc.Unsafe;
import java.lang.reflect.Field;
public class ObjectHeaderUtil {
private static Unsafe getUnsafe() throws Exception {
Class<?> unsafeClass = Class.forName("sun.misc.Unsafe");
Field field = unsafeClass.getDeclaredField("theUnsafe");
field.setAccessible(true);
return (Unsafe) field.get(null);