示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import graphql.ExecutionResult;
import graphql.GraphQL;
import graphql.schema.GraphQLSchema;
import graphql.schema.StaticDataFetcher;
import graphql.schema.idl.RuntimeWiring;
import graphql.schema.idl.SchemaGenerator;
import graphql.schema.idl.SchemaParser;
import graphql.schema.idl.TypeDefinitionRegistry;

import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring;

public class HelloWorld {

public static void main(String[] args) {
String schema = "type Query{hello: String} schema{query: Query}";

SchemaParser schemaParser = new SchemaParser();
TypeDefinitionRegistry typeDefinitionRegistry = schemaParser.parse(schema);

RuntimeWiring runtimeWiring = newRuntimeWiring()
.type("Query", builder -> builder.dataFetcher("hello", new StaticDataFetcher("world")))
.build();

SchemaGenerator schemaGenerator = new SchemaGenerator();
GraphQLSchema graphQLSchema = schemaGenerator.makeExecutableSchema(typeDefinitionRegistry, runtimeWiring);

GraphQL build = GraphQL.newGraphQL(graphQLSchema).build();
ExecutionResult executionResult = build.execute("{hello}");

System.out.println(executionResult.getData().toString());
// Prints: {hello=world}
}
}
Read more »

var

JavaScript没有块级作用域

在JS函数中用var声明的变量,其作用域是函数体的全部。

1
2
3
4
5
6
<script type="text/javascript">
for (var i = 0; i < 10; i++) {
var x = 8;
}
console.log(x);
</script>

这里的”x”已经跳出了”for”的作用域,却还可以被访问到。

Read more »

闭包问题

今天要说的是JavaScript的闭包问题,先来看代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script type="text/javascript">
for (var i = 0; i < json["length"]; i++) {
x += "<td>" + json[i]["contents"] + "</td>";
var row = document.createElement('tr');
row.innerHTML = x;
var op = document.createElement('button');
op.innerText = "购买";
op.setAttribute('style', 'height: 35px; width: 70px; padding-right: 10px; margin: 0 auto;');
op.addEventListener('click', function () { buyLoan(json[i]); }, false);
row.appendChild(op);
tbody.appendChild(row);
x = "";
}

</script>
Read more »

获取ECharts

  1. 官网下载
    在这里我比较推荐去ECharts官网下载,在官网里可以根据你的项目需求而组合你想要的组件。
  2. 从Github 上下载最新的release 版本
    Github地址
  3. npm安装
    1
    npm install echarts --save
  4. cdn引入
    你可以在cdnjs、npmcdn、bootcdn 上找到ECharts 的最新版本。
Read more »

异常

话不多说,先看异常:

1
1 HTTP Status 500 - Could not write content: No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0]->com.agen.entity.User["positionchanges"]->org.hibernate.collection.internal.PersistentSet[0]->com.agen.entity.Positionchange["position"]->com.agen.entity.Position_$$_jvst714_7["handler"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0]->com.agen.entity.User["positionchanges"]->org.hibernate.collection.internal.PersistentSet[0]->com.agen.entity.Positionchange["position"]->com.agen.entity.Position_$$_jvst714_7["handler"])

网上找到的解决办法说是因为,hibernate会给每一个被管理的对象加上hibernateLayInitializer属性,同时structs-jsonplugin或者其他的jsonplugin都是。
因为jsonplugin用的是java的”内审机制”,hibernate会给被管理的pojo加入一个hibernateLayInitializer属性,jsonplugin通过java的反射机制将pojo解析为json时,
同时hibernateLazyInitializer属性也进行反射操作,但是hibernateLazyIniyializer无法由反射得到,所以就抛出了异常。

Read more »

A + B问题

这是我在LintCode上看见的一道题目,我觉得很有意思,就决定写了博客记录一下。

题目:
给出两个整数 a 和 b , 求他们的和。

要求:

  1. 不允许使用 + 。
  2. 使用运算符。
  3. a和b都是32位的整数。
Read more »

毕设错误3

今天在写毕设的时候,偶然出现了这个错误,如下:

1
2
Error executing DDL  via JDBC Statement

遇见错误后,我做了这些事:

  1. 检查MySQL版本。
  2. 打开MySQL的Line Command,将出错误的MySQL复制进MySQL Line Command,找到出错原因对应的错误码。
  3. 上网查询对应的出错信息,比对最初的错误信息。
Read more »

开始使用

使用Vue.js

  1. 下载
    Vue.js官网将其下载至本地,通过script 标签引入。

    1
    <script src="js/vue.js"></script>
  2. 使用npm
    npm 是一个非常有用的JavaScript 包管理工具,通过npm 可以非常迅速地使用、安装和升级Vue.js 。

    1
    2
    3
    4
    // 安装
    npm install --global vue-cli
    // 测试
    vue -V
  3. 使用CDN
    这里推荐使用Bootstrap 的CDN 加速服务,地址为https://www.bootcdn.cn

    1
    <script src="https://cdn.bootcss.com/vue/2.6.10/vue.common.dev.js"></script>

    注:关于Vue的读法(读音 /vjuː/,类似于 view)。

Read more »

毕设错误1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
server:
port: 8080

spring:
thymeleaf:
cache: false
prefix: classpath:/templates/
suffix: .html
encoding: UTF-8
servlet:
content-type: text/html
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/human
username: root
password: root
jpa:
hibernate:
ddl-auto: update
show-sql: true

Read more »